gusucode.com > 各种VC自绘控件源码程序 > 各种VC自绘控件源码/code/SkinControls(自绘MFC基本控件 )/SkinControls/Test/TestDlg.cpp
// TestDlg.cpp : 实现文件 // #include "stdafx.h" #include "Test.h" #include "TestDlg.h" #include ".\testdlg.h" #include "SkinDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CTestDlg 对话框 CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/) : CDialog(CTestDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_pSkinWnd = NULL; } CTestDlg::~CTestDlg() { SafeDelete(m_pSkinWnd); } void CTestDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CTestDlg, CDialog) ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2) END_MESSAGE_MAP() // CTestDlg 消息处理程序 BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 m_pSkinWnd = new CSkinWnd; return TRUE; // 除非设置了控件的焦点,否则返回 TRUE } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CTestDlg::OnPaint() { CPaintDC dc(this); CxImage image; image.Load("test.bmp", CXIMAGE_FORMAT_BMP); image.SetTransIndex(0); image.SetTransColor(CxImage::RGBtoRGBQUAD(RGB(255,0,255))); image.Draw(dc.m_hDC, 0, 0); } //当用户拖动最小化窗口时系统调用此函数取得光标显示。 HCURSOR CTestDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CTestDlg::OnBnClickedButton1() { if (m_pSkinWnd->GetSafeHwnd() == NULL) m_pSkinWnd->Create(SKIN_POPUP_WINDOW, NULL, 100); m_pSkinWnd->SetWindowText(_T("自绘控件")); m_pSkinWnd->CenterWindow(); m_pSkinWnd->ShowWindow(1); } void CTestDlg::OnBnClickedButton2() { CSkinDlg dlg; dlg.DoModal(); }